home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 071-080 / amok77 / mousemove_2 / movemouse2.mod < prev    next >
Text File  |  1993-11-04  |  2KB  |  71 lines

  1. (*---------------------------------------------------------------------------
  2.   :Program.    MoveMouse2
  3.   :Author.     Thomas Igracki
  4.   :E-Mail.     T.IGRACKI@BAMP.ZER
  5.   :Version.    1.0
  6.   :Date.       04-Jan-92
  7.   :Copyright.  PD
  8.   :Language.   Oberon
  9.   :Translator. Amiga Oberon 2.13d
  10.   :Contents.   Damit läßt sich der Mauszeiger auf dem akt. Screen positionieren
  11.   :Usage.      MoveMouse2 [r=rel] <x> <y>, r=rel -> relativ zur akt. Position
  12. ---------------------------------------------------------------------------*)
  13. (* $StackChk- $RangeChk- $CaseChk- $OvflChk- $ReturnChk- $TypeChk- $NilChk- *)
  14. MODULE MoveMouse2;
  15. IMPORT
  16.        s: SYSTEM,
  17.        e: Exec,
  18.        d: Dos,
  19.        I: Intuition,
  20.       in: Input,
  21.       ie: InputEvent;
  22. TYPE
  23.    ArgsStruct = STRUCT END; LONGPTR = POINTER TO LONGINT;
  24. VAR 
  25.    DevIO        : e.IOStdReqPtr;
  26.    DevPort      : e.MsgPortPtr;
  27.    DeviceOpen   : BOOLEAN;
  28.    Event        : ie.InputEventAdr;
  29.    PPixel       : ie.IEPointerPixel;
  30.    dos          : d.DosLibraryPtr;
  31.    RDArgs       : d.RDArgsPtr;
  32.    args         : STRUCT (du:ArgsStruct) rel: LONGINT; x,y: LONGPTR END;
  33.  
  34. PROCEDURE ReadArgs*{dos,-798}(template{1}  : ARRAY OF CHAR;
  35.                               array{2}     : ArgsStruct;
  36.                               args{3}      : d.RDArgsPtr): d.RDArgsPtr;
  37.  
  38. BEGIN
  39.      dos := d.dos; RDArgs := ReadArgs ('r=rel/S,x/N/A,y/N/A',args,NIL);
  40.      IF RDArgs = NIL THEN d.PrintF ('Usage: MoveMouse2 [r=rel] <x> <y>\n'); HALT(20) END;
  41.  
  42.      DevPort := e.CreateMsgPort();
  43.      IF DevPort = NIL THEN HALT(20) END;
  44.  
  45.      DevIO   := e.CreateIORequest (DevPort,s.SIZE(DevIO^));
  46.      IF DevIO = NIL THEN HALT(20) END;
  47.  
  48.      IF e.OpenDevice ('input.device',0,DevIO,LONGSET{}) # 0 THEN HALT(20) END;
  49.      DeviceOpen := TRUE;
  50.  
  51.      (* Set new Mouse XY *)
  52.      DevIO.command := in.writeEvent;
  53.      DevIO.length  := s.SIZE(Event);
  54.  
  55.      Event.class    := ie.newpointerpos;
  56.      Event.subClass := ie.pixel;
  57.      IF args.rel = I.LTRUE THEN Event.qualifier:= {ie.relativeMouse} END;
  58.      PPixel.screen     := I.int.activeScreen;
  59.      PPixel.position.x := SHORT(args.x^);
  60.      PPixel.position.y := SHORT(args.y^);
  61.      Event.addr        := s.ADR(PPixel);
  62.  
  63.      DevIO.data := s.ADR(Event); e.OldDoIO (DevIO);
  64.  
  65. CLOSE
  66.      IF DeviceOpen    THEN e.CloseDevice (DevIO) END;
  67.      IF DevPort # NIL THEN e.DeleteMsgPort (DevPort) END;
  68.      IF DevIO   # NIL THEN e.DeleteIORequest (DevIO) END;
  69.      IF RDArgs  # NIL THEN d.FreeArgs (RDArgs) END;
  70. END MoveMouse2.
  71.